package com.yilin.tms.order.service.payment;

import com.yilin.tms.core.commons.model.CalculateCost;
import com.yilin.tms.core.entity.order.goods.GoodsOrder;
import com.yilin.tms.core.entity.user.hatch.HatchPricingRule;

public interface ICalculationService {

    CalculateCost getShipperCalculateCost(String shipperOrganizeId, GoodsOrder.PriceMode priceMode, Double freight, String startLngLats,
                                          String endLngLats, String truckTypeIds, Boolean matchmaking, Boolean includedTax);

    CalculateCost getTruckerCalculateCost(String truckerOrganizeId, Double freight, Boolean matchmaking);

    double calculateTechnicalFee(String platId, String truckTypeIds, double distance, boolean match);

    double ruleCalculate(HatchPricingRule pricingRule, double kilometer);

    String getCommTruckTypeIdByChildId(String truckTypeIds);

    //计算运营服务费
    //运营服务按比例收取
    double calculateOperateFee(String platId, Double transportCost);

    //计算技术服务费 - 下级平台
    //技术服务费按比例收取
    double calculatePlatTechnicalFee(String platId, Double transportCost);

    //计算技术服务费
    //通过计价规则项完成计价运算
    double calculateTechnicalFee(Double cost);
}
